home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.92 / crossfir / crossfire-0.92.5 / include / config.h < prev    next >
C/C++ Source or Header  |  1996-07-24  |  33KB  |  886 lines

  1. /*
  2.  * static char *rcsid_config_h =
  3.  *   "$Id: config.h,v 1.44 1996/07/24 07:13:14 master Exp master $";
  4.  */
  5.  
  6. /*
  7.     CrossFire, A Multiplayer game for X-windows
  8.  
  9.     Copyright (C) 1994 Mark Wedel
  10.     Copyright (C) 1992 Frank Tore Johansen
  11.  
  12.     This program is free software; you can redistribute it and/or modify
  13.     it under the terms of the GNU General Public License as published by
  14.     the Free Software Foundation; either version 2 of the License, or
  15.     (at your option) any later version.
  16.  
  17.     This program is distributed in the hope that it will be useful,
  18.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.     GNU General Public License for more details.
  21.  
  22.     You should have received a copy of the GNU General Public License
  23.     along with this program; if not, write to the Free Software
  24.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  25.  
  26.     The author can be reached via e-mail to master@rahul.net
  27. */
  28.  
  29. /* This file contains various #defines that select various options.
  30.  * Some may not be desirable, and some just may not work.
  31.  *
  32.  * There are some options that are not selectable in this file which
  33.  * may not always be undesirable.  An example would be certain
  34.  * treasures that you may not want to have available.  To remove the
  35.  * activation code would make these items worthless - instead remove
  36.  * these from the treasure file.  Some things to look for are:
  37.  *
  38.  * prepare_weapon, improve_*: Allow characters to enchant their own
  39.  *    weapons
  40.  * ench_armour: Allow characters to enchant their armor.
  41.  */
  42.  
  43. /* Enables Brian Thomas's new alchemy code.  Might unbalance the game - lets
  44.  * characters make potions and other special items.
  45.  */
  46. /* #define ALCHEMY*/
  47.  
  48. /*
  49.  * The following enables the new light/darkness code.  Basically, darkness
  50.  * affects line of sight, depending how dark the actual map is.  There are
  51.  * also objects that create light (torches, spells, etc), which counteract
  52.  * this effect.
  53.  */
  54.  
  55. #define USE_LIGHTING
  56.  
  57. /* Uncommenting the following line allows the new skill code to be used
  58.  * (look at skills.h to see some of the skill names.)  Allowing skills
  59.  * can really change the balance of the game, and thus might be undesirable.
  60.  * A few notes:  The following toggle just makes it so that the player can
  61.  * not use skills (hopefully it will work).  But the skills will still exist,
  62.  * so skills could still be gained with this selected.  In fact, some races
  63.  * start with skills.
  64.  */
  65.  
  66. #define ALLOW_SKILLS
  67.  
  68. /* Following allows characters to worshsip different gods.  Has no effect
  69.  * if ALLOW_SKILLS (above) is not defined.
  70.  */
  71.  
  72. #define MULTIPLE_GODS
  73.  
  74.  
  75. /* IF this is set, then the range type will not switch to skill when
  76.  * you use a melee weapon - this better emulates pre-skill code.
  77.  */
  78.  
  79. #define NO_AUTO_SKILL_SWITCH
  80.  
  81. /* Following uses a new weapon improvement system.  This makes it more
  82.  * difficult to get a super weapon, and makes it more likely that
  83.  * players will create weapons that help certain areas (damage, sp, etc)
  84.  * See the doc/SurvivalGuide for exact information on how the new method
  85.  * works.
  86.  */
  87. /* READ THIS:  NEW_IMPROVE_WEAPON will likely become a standard (non
  88.  * configurable) option in the next version.  If you are still using the old
  89.  * code and plan to in the future, send me mail (mwedel@pyramid.com) so that
  90.  * I know not to remove it.
  91.  */
  92.  
  93. #define NEW_IMPROVE_WEAPON
  94.  
  95.  
  96. /* This is a modification to the cone spells.  If a cone spell hits
  97.  * a monster, the spell stops progressing (same is true for parties
  98.  * of players).  This weakens the cones spells a bit.  If it is not
  99.  * define, you get the old behaviour (cone spells cover every square
  100.  * up to their range in a 90 degree arc.
  101.  */
  102.  
  103. /*
  104. #define NO_CONE_PROPOGATE
  105. */
  106.  
  107. /* SHOW_INV_ICON: this draws another icon next to the object image in
  108.  * the players inventory.  This icon shows the status of the object, such
  109.  * as cursed, magic, equipped, etc.  Right now, these icons are just words.
  110.  * Someday, hopefully better images will be done for these.
  111.  *
  112.  * Version 0.92.2 - Option no longer a compile time option - now each player
  113.  * can set it to his/her liking. 
  114.  * #define SHOW_INV_ICON
  115.  */
  116.  
  117.  
  118. /*
  119.  * BANFILE
  120.  * A file which contains users or sites which are banned from playing.
  121.  * wildcards can be used in the file.  Valid entries are put on seperate lines.
  122.  * example entries:
  123.  * "joeblow@*.*.abc.edu"   ban joeblow at the given site : note only works if
  124.  *                         user is using a client, as telnet does not report
  125.  *                         userid.
  126.  * "*@*.*.abc.edu"         ban the entire site...works both with telnet and
  127.  *                         client.
  128.  *
  129.  * Note - banning by user name should not be used - the client
  130.  * (including the newclient) can easily be changed to use any
  131.  * username.  Also, with the new client, numeric host id is
  132.  * used (ie, 192.15.4.6).  So to ban sites, you need to find out their
  133.  * numeric IP address - not hard, 'who reports this
  134.  *
  135.  * From Tyler Van Gorder <tvangod@ecst.csuchico.edu>
  136.  */
  137.  
  138. #ifndef BANFILE
  139. #define BANFILE         "ban_file"
  140. #endif
  141.  
  142. /* RANDOM_ENCOUNTERS determines if random encounter maps should be
  143.  * done.  What this means is that if you are in natural terrain
  144.  * (grass, brush, trees, jungle, etc), there is a chance as you step into
  145.  * that terrain that a 3x3 area will become a random encounter.  You
  146.  * automatically enter this encounter map, monsters are placed in it,
  147.  * and you remain in it until you get to the outside of the encounter
  148.  * map.  Reasons for having it active might be to make things a little
  149.  * more interesting (players can no longer be absolutely safe bringing
  150.  * stuff back to town), and it gives low level characters a place to beat
  151.  * up an endless supply of some monsters.  Reasons for disabling is because
  152.  * they might just be a nuisance, or you just don't like them
  153.  */
  154.  
  155. /*#define RANDOM_ENCOUNTERS*/
  156.  
  157. /* casting times for spells, if you have this defined then it takes a
  158.  * specific amount of time for a spell to go off. You may attack or
  159.  * be hit during this time, and this will cause you to lose the spell.
  160.  * I commented this out on my copy - I don't like the 'double clutch'
  161.  * needed to cast it (first direction key starts casting, the
  162.  * next actually puts the spell into effect.)  It could perhaps
  163.  * be changed so that the initial direction is where it goes, and it
  164.  * is cast automatically in that direction (so only 1 key is needed.)
  165.  * But this could be undesirable as various things move while you cast it.
  166.  */
  167.  
  168. /*#define CASTING_TIME*/
  169.  
  170. /* FULL_RING_DESCRIPTION has crossfire prints out the abilities of
  171.  * rings or amulets in the appropriate windows.  So instead of just
  172.  * have 'ring' get printed in your inventory, ring (Cha+1) or
  173.  * amulet (reflect missiled), etc, will be printed out.  This also applies
  174.  * to items laying on the ground.
  175.  * No more information will be gathered than if you left click the
  176.  * item (so, if the item is not identified, you will see nothing
  177.  * except the item name.)  Tastes may vary on using this option.  It
  178.  * can make the name excessively long, especially for unpaid items,
  179.  * causing the (unpaid) to be cut off.  On the other hand, it can save
  180.  * a lot of time, especially if you have several rings, or are looking
  181.  * for one in a shop with lots of rings.
  182.  */
  183.  
  184. #define FULL_RING_DESCRIPTION
  185.  
  186. /* SHOP_LISTINGS allows you to get a quick listing of what the shop has
  187.  * in stock (unfortunately, it is still up to you to find the item.)
  188.  * To get the listing, a 'menu' sign must be in the store, and then
  189.  * must be A)pplied.  There probably isn't much reason not to define
  190.  * this, as searching through the shop to find the item you want should
  191.  * not be part of the game (IMHO). As time passes, more and more shops
  192.  * will actually have signs put in them.  At some time, this should
  193.  * probably become a standard part of the game.
  194.  * Mark Wedel (master@rahul.net)
  195.  * 
  196.  * CF 0.91.2 - now standard part of game
  197.  * #define SHOP_LISTINGS
  198.  */
  199.  
  200. /* if EXPLORE_MODE is defined, it allows players to enter explore mode,
  201.  * where they can not die.  Unlike other games (nethack for instance) explore
  202.  * modes, the only thing Crossfire explore mode does is prevent death.
  203.  * Characters in explore mode will not be able to go on the scoreboard.  Also,
  204.  * once explore mode is entered, there is no return.  Explore mode can
  205.  * only be entered if the person doing so is the only player in the
  206.  * game, and once done, that person can not add new players to the
  207.  * game.  To get into explore mode, type 'explore
  208.  * Explore mode code added by Mark Wedel (master@rahul.net)
  209.  * It's a good idea to turn off EXPLORE_MODE if you will only be running
  210.  * on server, since it would block new players.
  211.  */
  212.  
  213. /* #define EXPLORE_MODE */
  214.  
  215. /****************************************************************************/
  216. /* Patch: NOT_PERMADEATH                Author: Charles Henrich             */
  217. /* Email: henrich@crh.cl.msu.edu        Date  : April 9, 1993               */
  218. /*                                                                          */
  219. /* Purpose: This patch changes death from being a permanent, very painful   */
  220. /*          thing, to a painful, but survivable thing.  More mudlike in     */
  221. /*          nature.  With this patch defined, when a player dies, they will */
  222. /*          permanently lose one point off of a random stat, as well as     */
  223. /*          losing 20% of their experience points.  Then they are whisked   */
  224. /*          to the start map.  Although this sounds very nice here, it is   */
  225. /*          still REAL painful to die, 20% of a million is alot!            */
  226. /*                                                                          */
  227. /****************************************************************************/
  228. /* Note from Frank: This really makes the game easier, and takes away
  229.  * a lot of the nerve, but people have different tastes...
  230.  * Note from Mark:  It can make the game much less frustrating.  Especially
  231.  * if people are coming in through remote sites, and might get killed
  232.  * by lag.  Also, removes a lot of incentive for one player to kill another.
  233.  * Note: Resurrection/reincarnation/raise dead spells are meaningless
  234.  * if NOT_PERMADEATH is set.
  235.  */
  236.  
  237. #define NOT_PERMADEATH
  238.  
  239. /* define RESURECTION if you want to let players bring other players
  240.  * back to life via some spells.  If RESURRECTION is undefined, then a
  241.  * death is permanent.  NOTE: RESURRECTION (either defined or undefined)
  242.  * has no meaning if NOT_PERMADEATH is defined.  SAVE_PLAYER also needs
  243.  * to be defined for this to have any use
  244.  */
  245. #define RESURRECTION
  246.  
  247. /*
  248.  * Enables the 'search-item command; a method to find equipment
  249.  * in shops. 
  250.  * This is somewhat useful is FULL_RING_DESCRIPTION is enabled (above.)
  251.  * It matches by substrings of the name of the item as it appears in
  252.  * the look window.  Therefor, if FULL_RING_DESCRIPTION is not enabled,
  253.  * you can never match by ring abilities, as these are then not
  254.  * displayed in the look window.
  255.  * Seems like it now works, and doesn't cause the game to hang.
  256.  */
  257.  
  258. #define SEARCH_ITEMS
  259.  
  260. /*
  261.  *  Enables party system.  Note - this has been mostly re-written for
  262.  * version 0.91.2
  263.  */
  264.  
  265. #define SIMPLE_PARTY_SYSTEM
  266.  
  267. /*
  268.  * If defined, some buttons for walking pops up.  They're mostly
  269.  * useless though.
  270.  */
  271.  
  272. /* #define USE_BUTTONS */
  273.  
  274. /*
  275.  * If SECURE is defined, crossfire will not accept enviromental variables
  276.  * as changes to the LIBDIR and other defines pointing to specific
  277.  * directories.
  278.  */
  279.  
  280. #define SECURE 
  281.  
  282. /*
  283.  * SERVER:
  284.  * Leave this in if you want the magic server stuff.  eanders@cmu.edu
  285.  * It is now also able to accept new players via socket without
  286.  * the -server switch.
  287.  * LOGFILE specifies which file to log to when playing with the
  288.  * -server option as well.
  289.  * NO_ADD:
  290.  * If you want players to only be able to join the game by using the
  291.  * client, and not by having other players type "'add <display>", then
  292.  * define this.  Note that in the near future, the highscorelist will
  293.  * depend on the username when making sure that one player can only
  294.  * have one entry pr. class, and it's only possible to determine
  295.  * username if they use the client.
  296.  * ONE_PLAYER_PR_UID:
  297.  * A user can only play one player in a single crossfire at any given time.
  298.  * Rumor has it the ONE_PLAYER_PR_UID causes some problems even with multiple
  299.  * user ids.
  300.  */
  301.  
  302. #define SERVER
  303. #ifdef SERVER
  304. #define PORT 13326 /* Crossfire => 10000+cfe => 13326 (huh?) CrossFirE :)*/
  305. #endif
  306. #ifndef LOGFILE
  307. #define LOGFILE "/tmp/cross.log"
  308. #endif
  309. /*#define NO_ADD*/
  310. /* #define ONE_PLAYER_PR_UID */
  311.  
  312. /*
  313.  * DMFILE
  314.  * A file containing valid names that can be dm, one on each line.
  315.  * ie, something like:
  316.  *
  317.  * master
  318.  * root
  319.  * crossfire
  320.  *
  321.  * Thus, a global password is no longer required.  This file is located
  322.  * in the lib directory.
  323.  * 
  324.  */
  325.  
  326. #ifndef DMFILE
  327. #define DMFILE "dm_file"
  328. #endif
  329.  
  330. /*
  331.  * Where to send error-reports.  If you're hacking at the source, define
  332.  * this as your mail-address.
  333.  */
  334.  
  335. #ifndef DM_MAIL
  336. /* #define DM_MAIL "master@rahul.net" */
  337. #endif
  338.  
  339. /*
  340.  * If undefined, malloc is always used.
  341.  * There is still a calloc() call in player.c which is not affected by this
  342.  * definition due to a bug which hasn't been found yet.
  343.  */
  344. /* #define USE_CALLOC */
  345.  
  346. /*
  347.  * If defined, two FLOOR_TYPE items can be put atop each other and
  348.  * will be drawn correctly (i.e. a tower on top of cobblestones) -- only
  349.  * if you use colour pixmaps of course.
  350.  * If undefined, you will only get the topmost floor item drawn.
  351.  * The cost is low in memory and speed and it looks a lot better, so
  352.  * you may want to define it.
  353.  * schmid@fb3-s7.math.tu-berlin.de
  354.  */
  355.  
  356. #if defined(Xpm_Pix)
  357. #define DOUBLE_FLOOR
  358. #endif
  359.  
  360.  
  361. /*
  362.  * SWAP_STATS is fixed now - rgg.
  363.  *
  364.  * Swap stats allows players to swap the values for their stats around
  365.  * in the "Roll again" phase of the character selection.  This should
  366.  * hopefully make character selection quicker, allowing for quicker
  367.  * game start ups. 
  368.  * Bugs:    c.blackwood@rdt.monash.edu.au
  369.  */ 
  370.  
  371. #define    USE_SWAP_STATS
  372.  
  373. /*
  374.  *   Cool soda hack to sort rolled stats.
  375.  */
  376.  
  377. #define SORT_ROLLED_STATS
  378.  
  379.  
  380. /*
  381.  * CHRFONT (Character-Font), if defined, enables the player to draw
  382.  * themselves in their own font and include this in the game.
  383.  * It is, as default, disabled, since it slows the game down.
  384.  * Especially when you have a black/white screen, it slows the
  385.  * game down heavily.
  386.  * It also doesn't work with pixmaps (yet)
  387.  */
  388.  
  389. /* #define    CHRFONT */ /* Not working ++kivinen 05:52 Jan 30 1994 */
  390.  
  391. /*
  392.  * You can restrict playing in certain times by creating a PERMIT_FILE
  393.  * in LIBDIR. here is a sample:
  394.  * -----
  395. Mon 8-12
  396. Mon 13-16
  397. Tue 8-16
  398. Wed 8-16
  399. Thu 8-16
  400. Fri 8-12
  401. msg
  402. Playing is forbidden during working hours.
  403.  * -----
  404.  * Unfortunately IBMR2 isn't supported by PERM_FILE yet.
  405.  */
  406.  
  407. #ifndef _IBMR2
  408. #define PERM_FILE "forbid"
  409. #endif
  410.  
  411. /*
  412.  * random() is much better than rand().  If you have random(), use it instead.
  413.  */
  414.  
  415. #if defined (sgi) || defined (hpux) || defined(linux)
  416. #define RANDOM() rand()
  417. #define SRANDOM(xyz) srand(xyz)
  418. #else
  419. #if defined(SYSV) || defined(SVR4)
  420. #define RANDOM() lrand48()
  421. #define SRANDOM(xyz) srand48(xyz)
  422. #else
  423. #define RANDOM() random()
  424. #define SRANDOM(xyz) srandom(xyz)
  425. #endif
  426. #endif
  427.  
  428. /*
  429.  * If you feel the game is too fast or too slow, change MAX_TIME.
  430.  * You can experiment with the 'speed <new_max_time> command first.
  431.  * The length of a tick is MAX_TIME microseconds.  During a tick,
  432.  * players, monsters, or items with speed 1 can do one thing.
  433.  */
  434.  
  435. #define MAX_TIME    120000    /* How slow the game will go */
  436.  
  437. /*
  438.  * MAP_MAXTIMEOUT tells the maximum of ticks until a map is swapped out
  439.  * after a player has left it.  If it is set to 0, maps are
  440.  * swapped out the instant the last player leaves it.
  441.  * If you are low on memory, you should set this to 0.
  442.  * Note that depending on the map timeout variable, the number of
  443.  * objects can get quite high.  This is because depending on the maps,
  444.  * a player could be having the objects of several maps in memory
  445.  * (the map he is in right now, and the ones he left recently.)
  446.  * Each map has it's own TIMEOUT value and value field and it is
  447.  * defaulted to 300
  448.  */
  449.  
  450. #define MAP_MAXTIMEOUT    1000    /* How many ticks till maps are swapped out */
  451.  
  452. /*
  453.  * MAP_RESET tells whether map is reset after some time.  If it is defined,
  454.  * the game uses weight variable of map object to tell, after how many seconds
  455.  * the map will be reset.  If MAP_RESET is undefined, maps will never reset.
  456.  *
  457.  * MAP_MAXRESET is the maximum time a map can have before being reset.  It
  458.  * will override the time value set in the map, if that time is longer than
  459.  * MAP_MAXRESET.  This value is in seconds.  If you are low on space on the
  460.  * TMPDIR device, set this value to somethign small.  The default
  461.  * value in the map object is 7200 (2 hours)
  462.  * I personally like 1 hour myself, for solo play.  It is long enough that
  463.  * maps won't be resetting as a solve a quest, but short enough that some
  464.  * maps (like shops and inns) will be reset during the time I play.
  465.  * Comment out MAP_MAXRESET time if you always want to use the value
  466.  * in the map archetype.
  467.  */
  468.  
  469. #define MAP_RESET
  470. #define MAP_MAXRESET    7200
  471.  
  472. /*
  473.  * MAX_OBJECTS is no hard limit.  If this limit is exceeded, crossfire
  474.  * will look for maps which are already scheldued for swapping, and
  475.  * promptly swap them out before new maps are being loaded.
  476.  * If playing only by yourself, this number can probably be as low as
  477.  * 3000.  If in server mode, probably figure about 1000-2000 objects per
  478.  * active player (if they typically play on different maps), for some guess
  479.  * on how many to define.  If it is too low, maps just get swapped out
  480.  * immediately, causing a performance hit.  If it is too high, the program
  481.  * consumes more memory.  If you have gobs of free memory, a high number
  482.  * might not be a bad idea.
  483.  */
  484.  
  485. #define MAX_OBJECTS    6000
  486.  
  487. /*
  488.  * You must change LIBDIR to where you want your maps, highscore and
  489.  * archetype file to be.  It's enough to change it in the Imakefile though.
  490.  * The other files will be put in LIBDIR/MAPDIR, LIBDIR/PLAYERDIR, etc.
  491.  * Remember to create the directory and move the needed files there.
  492.  * Note: By default, what is set in config/crosssite.def (as CTop/lib)
  493.  * will be used instead of the value below.  If you want to force the value
  494.  * below to be used, uncomment the #undef line.
  495.  */
  496.  
  497. /* #undef LIBDIR */
  498. #ifndef LIBDIR
  499. #define LIBDIR "/home/a/tars/lib"
  500. #endif
  501.  
  502. /*
  503.  * If you want the players to be able to save their characters between
  504.  * games, define SAVE_PLAYER and set PLAYERDIR to the directories
  505.  * where the player-files will be put.
  506.  * Remember to create the directory (make install might do that though).
  507.  * (In the future it should be possible by a define to say that save-files
  508.  * should be kept in each players' directory, though this isn't completely
  509.  * in the spirit of the game (it's multiplayer))
  510.  * If SAVE_HOMEDIR is defined, the players will be saved in the homedir
  511.  * of the _invoking_ player instead of in LIBDIR/PLAYERDIR.
  512.  * If LOCK_PLAYER is defined, a player will be unable to enter more
  513.  * than one game of crossfire at the same time (stops some possible cheating).
  514.  * If you intend to run a central server, and not allow the players to
  515.  * start their own crossfire, you won't need to define this.
  516.  * If USE_CHECKSUM is defined, a checksum will be calculated each time
  517.  * a player saves a character.
  518.  * If ENABLE_CHECKSUM is defined, the players will get the cheat-flag set
  519.  * if the checksums don't match.  If your player-files don't have checksums,
  520.  * you'll want to leave "USE_CHECKSUM" defined for a while so they all
  521.  * get checksums, and then define "ENABLE_CHECKSUM" to utilize this.
  522.  */
  523.  
  524. /* CF 0.91.6 - SAVE_PLAYER now standard part of game */
  525. /*#define SAVE_PLAYER*/
  526.  
  527. /* #define SAVE_HOMEDIR */
  528. /* #define LOCK_PLAYER */
  529. #define USE_CHECKSUM
  530. /* #define ENABLE_CHECKSUM */ /* Will be default in distant future versions */
  531.  
  532. #ifndef PLAYERDIR
  533. #define PLAYERDIR "players"
  534. #endif
  535.  
  536. /*
  537.  * If you have defined SAVE_PLAYER, you might want to change this, too.
  538.  * This is the access rights for the players savefiles.
  539.  * I think it is usefull to restrict access to the savefiles for the
  540.  * game admin. So if you make crossfire set-uid, use 0600.
  541.  * If you are running the game set-gid (to a games-group, for instance),
  542.  * you must remember to make it writeable for the group (ie 0660).
  543.  * Kjetil W. J{\o}rgensen, jorgens@pvv.unit.no
  544.  * (Note: something should probably be done with lock-file permission)
  545.  */
  546. #define    SAVE_MODE    0660
  547.  
  548. /*
  549.  * If you want use banks and inns where players can store their items
  550.  * between games, you should define UNIQUE_ITEMS. Those objects are saved
  551.  * to ITEMS_DIR. This flag allows also the real artifacts (i.e. one item in
  552.  * the whole game). The graveyards also works better if this is defined.
  553.  * If anyone can start their own server, you should also define LOCK_ITEMS
  554.  * to avoid loosing the items and other conflicts.  [Tero.Haatanen@lut.fi]
  555.  */
  556.  
  557. #define UNIQUE_ITEMS
  558. #ifdef UNIQUE_ITEMS
  559. #define ITEMS_DIR "unique-items"
  560. #define LOCK_ITEMS
  561. #endif
  562.  
  563. /*
  564.  * Allow players to save their window postions with the 'X' command.
  565.  * This only works in split window mode. If you have trouble with your
  566.  * window manager when restoring saved positions (the windows shift
  567.  * around slightly) try:
  568.  * #define FUNNY_WINDOW_MANAGER
  569.  * This bug seems to happen when using tvtwm (this has been tested to
  570.  * work correctly on olvwm and mwm).
  571.  */
  572.  
  573. #define SAVE_WINDOW_POSITIONS
  574.  
  575. /* NOTE ON SAVE_INTERVAL and AUTOSAVE:  Only one of these two really
  576.  * needs to be selected.  You can set both, and things will work fine,
  577.  * however, it just means that a lot more saving will be done, which
  578.  * can slow things down some.
  579.  */
  580.  
  581. /* How often (in seconds) the player is saved if he drops things.  If it is
  582.  * set to 0, the player will be saved for every item he drops.  Otherwise,
  583.  * if the player drops and item, and the last time he was saved
  584.  * due to item drop is longer
  585.  * the SAVE_INTERVAL seconds, he is then saved.  Depending on your playing
  586.  * environment, you may want to set this to a higher value, so that
  587.  * you are not spending too much time saving the characters.
  588.  * This option should now work (Crossfire 0.90.5)
  589.  */
  590.  
  591. /*#define SAVE_INTERVAL 300*/
  592.  
  593. /*
  594.  * AUTOSAVE saves the player every AUTOSAVE ticks.  A value of
  595.  * 5000 with MAX_TIME set at 120,000 means that the player will be
  596.  * saved every 10 minutes.  Some effort should probably be made to
  597.  * spread out these saves, but that might be more effort than it is
  598.  * worth (Depending on the spacing, if enough players log on, the spacing
  599.  * may not be large enough to save all of them.)  As it is now, it will
  600.  * just set the base tick of when they log on, which should keep the
  601.  * saves pretty well spread out (in a fairly random fashion.)
  602.  */
  603.  
  604. #define AUTOSAVE 5000
  605.  
  606. /* Often, emergency save fails because the memory corruption that caused
  607.  * the crash has trashed the characters too. Define NO_EMERGENCY_SAVE
  608.  * to disable emergency saves.  This actually does
  609.  * prevent emergency saves now (Version 0.90.5).
  610.  */
  611.  
  612. #define NO_EMERGENCY_SAVE
  613.  
  614. /* By selecting the following, whenever a player does a backup save (with
  615.  * the 'save command), the player will be saved at home (EMERGENCY_MAP_*
  616.  * information that is specified later).  IF this is not set, the player
  617.  * will be saved at his present location.
  618.  */
  619.  
  620. /*#define BACKUP_SAVE_AT_HOME*/
  621.  
  622. /*
  623.  * Define the following if you wish to allow players to set their title
  624.  * and to save it on the disk (if SAVE_PLAYER is defined).
  625.  */
  626.  
  627. #define SET_TITLE
  628.  
  629.  
  630. /*
  631.  * The following is only interesting if you run crossfire seteuid-flagged.
  632.  * XOpenDisplay may want to read the .Xauthority file of the person who
  633.  * runs the program. This can only be allowed if the system allows free
  634.  * changing of the uid back and forth between invocation time uid
  635.  * and the setuid uid. Otherwise we can't change euid back to suid after
  636.  * setting it to invoking uid to read the xauth file. So far, only
  637.  * POSIX-compatible systems and System-V derivates allow a process to
  638.  * reset to a previous uid.
  639.  * If this flag is left undefined, crossfire will not set uid back to
  640.  * that of the invoking process while opening the first display connection.
  641.  * In this case, you'll have to do xhost +machine before running crossfire,
  642.  * 'machine' being the machine you run the program on.
  643.  *    //magnuz@cd.chalmers.se
  644.  */
  645. /* #define HAVE_SAVE_UID */
  646. #if (defined(hpux) || defined(sysv)) && !defined(HAVE_SAVE_UID)
  647. #  define HAVE_SAVE_UID
  648. #endif
  649.  
  650. /*
  651.  * If you want to have a Message Of The Day file, define MOTD to be
  652.  * the file with the message.  If the file doesn't exist or if it
  653.  * is empty, no message will be displayed.
  654.  * (It resides in the LIBDIR directory)
  655.  */
  656.  
  657. #ifndef MOTD
  658. #define MOTD "motd"
  659. #endif
  660.  
  661. /*
  662.  * If you want to take the game down while installing new versions, or
  663.  * for other reasons, put a message into the SHUTDOWN_FILE file.
  664.  * Remember to delete it when you open the game again.
  665.  * (It resides in the LIBDIR directory)
  666.  */
  667.  
  668. #ifndef SHUTDOWN_FILE
  669. #define SHUTDOWN_FILE "shutdown"
  670. #endif
  671.  
  672. /*
  673.  * Your tmp-directory should be large enough to hold the uncompressed
  674.  * map-files for all who are playing.
  675.  * It ought to be locally mounted, since the function used to generate
  676.  * unique temporary filenames isn't guaranteed to work over NFS or AFS
  677.  * On the other hand, if you know that only one crossfire server will be
  678.  * running using this temporary directory, it is likely to be safe to use
  679.  * something that is NFS mounted (but performance may suffer as NFS is
  680.  * slower than local disk)
  681.  */
  682.  
  683. #define TMPDIR "/tmp"
  684.  
  685. /*
  686.  * This doesn't work yet, leave NO_LOG commented away.
  687.  * If you want to save ram, and want absolutely _no_ output from the
  688.  * game, even if something went very wrong, you can define NO_LOG.
  689.  * If your system doesn't understand ANSI-C var-args, you can try
  690.  * to define this to make it compile.
  691.  */
  692.  
  693. /* #define NO_LOG */
  694.  
  695. /*
  696.  * If you want to regenerate the spoiler.ps file, you have to recompile
  697.  * the game with DUMP_SWITCHES defined.  If defined, it turns on the
  698.  * -m -m2 -m3 -m4 switches.
  699.  */
  700.  
  701. #define DUMP_SWITCHES
  702.  
  703. /*
  704.  * If you compress your files to save space, please define at least uncompress
  705.  * If you change to some compression program not using ".Z" or ".gz", please
  706.  * define COMPRESS_SUFFIX.  Note though that ".Z" and ".gz" is checked anyway.
  707.  * The program has support built in to handle gzip and compress
  708.  * files, however, the gzip, gunzip, compress and uncompress programs all
  709.  * need to be in the PATH environmental variable for this to work.
  710.  * COMPRESS is the program name to compress the file, UNCOMPRESS to
  711.  * uncompress the file.  if COMPRESS_SUFFIX is not defined, COMPRESS
  712.  * and UNCOMPRESS have no meaning.
  713.  */
  714.  
  715. #ifndef COMPRESS_SUFFIX
  716. /* #define COMPRESS_SUFFIX ".Z" */
  717. #endif
  718.  
  719. /* #define COMPRESS <whatever> */
  720. /* #define UNCOMPRESS <whatever> */
  721.  
  722. #ifndef COMPRESS
  723. #  if defined (linux) || defined(SVR4)
  724. #    define COMPRESS    "/usr/bin/compress"
  725. #  else
  726. #    if defined(sgi)
  727. #      define COMPRESS    "/usr/bsd/compress"
  728. #    else
  729. #      if defined(ultrix) || defined(BSD) || defined(_BSD)
  730. #        define COMPRESS    "/usr/ucb/compress"
  731. #      else
  732. #        define COMPRESS    "/local/bin/compress"
  733. #      endif
  734. #    endif
  735. #  endif
  736. #endif
  737. #ifndef UNCOMPRESS
  738. #  if defined (linux) || defined(SVR4)
  739. #    define UNCOMPRESS    "/usr/bin/uncompress"
  740. #  else
  741. #    if defined(sgi)
  742. #      define UNCOMPRESS    "/usr/bsd/uncompress"
  743. #    else
  744. #      if defined(ultrix) || defined(BSD) || defined(_BSD)
  745. #        define UNCOMPRESS    "/usr/ucb/uncompress"
  746. #      else
  747. #        define UNCOMPRESS    "/local/bin/uncompress"
  748. #      endif
  749. #    endif
  750. #  endif
  751. #endif
  752.  
  753.  
  754. #define EMERGENCY_MAPPATH "/city/city"
  755. #define EMERGENCY_X 15
  756. #define EMERGENCY_Y 19
  757.  
  758. /*
  759.  *  It shouldn't be neccessary to change the following constants, but you
  760.  *  are free at have a look at them 8)
  761.  */
  762.  
  763. /*
  764.  * These defines tells where, relative to LIBDIR, the maps, the map-index,
  765.  * archetypes highscore and treaures files and directories can be found.
  766.  */
  767.  
  768. #define MAPDIR        "maps"
  769. #define ARCHETYPES    "archetypes"
  770. #define HIGHSCORE    "highscore"
  771. #define TREASURES    "treasures"
  772.  
  773. #ifdef SOUND_EFFECTS
  774. #  define SOUNDS_LIST    "sounds"
  775. #endif
  776.  
  777. #define DEBUG_TIME        /* Enable the 'time command, and it's logs */
  778. #define MAX_ERRORS    25    /* Bail out if more are received during tick */
  779. #define STARTMAX        500     /* How big array of objects to start with */
  780. #define OBJ_EXPAND      100     /* How big steps to use when expanding array */
  781.  
  782. #define HIGHSCORE_LENGTH 10    /* How many entries there are room for */
  783.  
  784. #define ARCHTABLE 2459        /* Used when hashing archetypes */
  785. #define MAXSTRING 20
  786.  
  787. #define COMMAND_HASH_SIZE 107    /* If you change this, delete all characters :) */
  788.  
  789. #ifndef DEBUG
  790. /* #define DEBUG */        /* You don't really want to define DEBUG... */
  791. #endif
  792.  
  793.  
  794. /*
  795.  * This option creates more core files.  In some areas, there are certain
  796.  * checks done to try and make the program more stable (ie, check
  797.  * parameter for null, return if it is).  These checks are being done
  798.  * for things that should not happen (ie, being supplied a null parameter).
  799.  * What MANY_CORES does, is if one of these checks is true, it will
  800.  * dump core at that time, allowing for fairly easy tracking down of the
  801.  * problem.  Better to fix problems than create thousands of checks.
  802.  */
  803. #define MANY_CORES
  804.  
  805. /* To make loading of the XPM files more efficient, a monstage
  806.  * of them is created.  This way, only a few XCreatePixmap...
  807.  * calls need to be made instead of 2000+.  The values below
  808.  * indicate the number of pixmaps wide and high the montage
  809.  * should be.  Very large numbers have the disadvantage of
  810.  * not being especially efficient on space, and also require more
  811.  * server memory.  The server memory could be a problem for
  812.  * X Terminals.
  813.  */
  814.  
  815. #define XPM_MONTAGE_X 25
  816. #define XPM_MONTAGE_Y 20
  817.  
  818. /*  SPELLPOINT_LEVEL_DEPEND  --  Causes the spellpoint cost
  819.  *  of spells to vary with their power.  Spells that become very
  820.  *  powerful at high level cost more.  The damage/time of
  821.  *  characters increases though.
  822.  */
  823.  
  824. #define SPELLPOINT_LEVEL_DEPEND
  825.  
  826.  
  827. /* SPELL_ENCUMBRANCE -- If you're carrying a weapon or wearing heavy armour,
  828.   you have a chance of fumbling your spellcasting with this on.  Formula is:
  829.   encumbrance = 3*weapon_weight + armour_weight
  830.  
  831.   failure if roll from 1-200 is less than encumbrance + sp->level -
  832.   op->level - 35
  833. */
  834.  
  835. #define SPELL_ENCUMBRANCE
  836.  
  837. /* SPELL_FAILURE_EFFECTS only has meaing if SPELL_ENCUMBRANCE is defined.
  838.  * What it does, is that when the player fails a spell, various effects
  839.  * will happen (player is paralyzed, confused, wonder spell is cast, etc.)
  840.  * I disabled it because I think it would make life much too hazardous
  841.  * for low level casters.  They either need to wear light armor (which
  842.  * means that they will get pounded on by monsters), or will get
  843.  * confused/paralyzed/other effects often.  High level casters would
  844.  * be mostly unaffected, since they would be casting spells that are
  845.  * below their level.
  846.  */
  847.  
  848. /* #define SPELL_FAILURE_EFFECTS */
  849.  
  850. /* CHECK_ACTIVE_MAPS is in certain functions to determine how often
  851.  * the process_active maps function should be called.  In general, a simple
  852.  * count variable is used (ie, every CHECK_ACTIVE_MAPS objects loaded/saved
  853.  * or pixmaps built, call the function.  The process_maps function will
  854.  * return without doing any processing if not enough time has elapsed.
  855.  * In general, a too low value for CHECK_ACTIVE_MAPS will cause some
  856.  * loss in performance, a too high value will mean that the function is
  857.  * not called enough, causing uneven movement.
  858.  * If CHECK_ACTIVE_MAPS is 0, then the function is never called.
  859.  * Also see PROCESS_WHILE_LOADING below.
  860.  */
  861.  
  862. #define CHECK_ACTIVE_MAPS 25
  863.  
  864. /* This option will cause process_maps to be called while maps are
  865.  * being loaded and saved.  This has the advantage that other
  866.  * players (the one that did not enter a new map) can do whatever they
  867.  * want while the map is loading, and are not frozen.  Same is true
  868.  * when a map is being frozen.
  869.  *
  870.  * If you are on a sufficiently fast machine, the map loading and
  871.  * saving time may be small enough, that the players don't notice
  872.  * anything, so setting this might not be desirable.
  873.  *
  874.  * Also, there used to be bugs associated with this - players entering maps
  875.  * to find that all the exits are closed, appearing the middle the
  876.  * ocean as the exit a map, etc.  Hopefully, I have fixed those bugs,
  877.  * but it is difficult to be sure.  If you set this, and find those
  878.  * things happening, turn this option off, and please let me know.
  879.  *
  880.  * Apparantly, there are still some bugs associated with this option, so
  881.  * it is better to leave commented out.
  882.  *
  883.  * Mark Wedel (master@rahul.net)
  884.  */
  885. /*#define PROCESS_WHILE_LOADING*/
  886.